// PROGRAMA : SCRP1640
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : RELATORIO DAS FICHAS DE INDICE CRIMINAL
// PROGRAMADOR: JOSE ANTONIO COELHO
// DATA : 29 DE JULHO DE 1997
// ALTERACAO : 25/01/1999 POR SOLON MIRANDA
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrp1640Report;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrr1100Report;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrr1200Report;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrr1300Report;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1640 OBJETIVO : RELATORIO DAS FICHAS DE INDICE CRIMINAL *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/scrp1640")
public class Scrp1640 {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrp1640Report report;
	Scrr1100Report report1;
	Scrr1200Report report2;
	Scrr1300Report report3;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp1640 scrp1640Anterior;
	String faseproc = "0";

	// private long jReg_geral = 0;
	private int jData_nasc = 0;
	private int jDataRegistro = 0;
	private int jDataAtuacao = 0;
	private String jDescInstrucao = "";
	private String jDescreg = "";
	private String jDescAltura = "";
	private String jDescCivil = "";
	private String jDescCutis = "";
	private String jDescCor = "";
	private String jDescTipocabelo = "";
	private String jDescOlho = "";
	private String jDescCompleicao = "";
	private int jDataDig = 0;
	private int i = 0;

	public Scrp1640(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(long jFicha1, long jFicha2) throws ParseException, JRException, FileNotFoundException {
		// Par�grafo: fd33()
		sessao.getScrg001().setWVltw(17);
		// RELATORIO 1 PS=60 LS=80
		// report = new Scrp1640Report();
		report1 = new Scrr1100Report();
		report2 = new Scrr1200Report();
		report3 = new Scrr1300Report();

		report1.setPageSize(60);
		report1.setLineSize(80);
		report2.setPageSize(60);
		report2.setLineSize(80);
		report3.setPageSize(60);
		report3.setLineSize(80);
		/*
		 * report1.setPageSize(60); report1.setLineSize(80); report2.setPageSize(60); report2.setLineSize(80); report3.setPageSize(60); report3.setLineSize(80);
		 */

		while (criminalView.pesquisaRegEstadualGeralFaixaStatusRegDifer(jFicha1, jFicha2, 5)) {
			// jReg_geral = criminalView.getRegEstadualGeral();
			report1.setJregGeral(criminalView.getRegEstadualGeral());

			report1.setDedos(1, 1, criminalView.getPolegarDireito());
			report1.setDedos(2, 1, criminalView.getIndicadorDireito());
			report1.setDedos(3, 1, criminalView.getMedioDireito());
			report1.setDedos(4, 1, criminalView.getAnularDireito());
			report1.setDedos(5, 1, criminalView.getMinimoDireito());
			report1.setDedos(1, 2, criminalView.getPolegarEsquerdo());
			report1.setDedos(2, 2, criminalView.getIndicadorEsquerdo());
			report1.setDedos(3, 2, criminalView.getMedioEsquerdo());
			report1.setDedos(4, 2, criminalView.getAnularEsquerdo());
			report1.setDedos(5, 2, criminalView.getMinimoEsquerdo());
			report1.setJnomecompleto(criminalView.getNomeCompleto());

			report2.setJmae(criminalView.getNomeMae());

			jData_nasc = criminalView.getDataNasc();
			report2.setDnas((int) UtilBean.extraiDigitos(jData_nasc, 8, 6, 2));
			report2.setMnas((int) UtilBean.extraiDigitos(jData_nasc, 8, 4, 2));
			report2.setAnas((int) UtilBean.extraiDigitos(jData_nasc, 8, 0, 4));

			report2.setJidentidade(criminalView.getRegFederalCi());
			report2.setJufreggeral(criminalView.getUfRegEstadualGeral());
			report2.setJpai(criminalView.getNomePai());
			report2.setJdelegacia(criminalView.getNomeDelegacia());
			report2.setJdescmunicipio(criminalView.getMunicipioRegGeral());
			report2.setJmunicipio(criminalView.getCodigoMunicipioRegGeral());
			report1.setJnomeanterior(criminalView.getNomeAnterior());
			for (i = 1; i <= 4; i++) {
				report2.setJalcunha(i, criminalView.getApelidoAlcunhas(i));
			}
			report2.setJsexo(criminalView.getSexo());
			report2.setJnaturalidade(criminalView.getNaturalidade());
			report2.setJcodmunnascimento(criminalView.getCodigoMunicipioNasc());
			report2.setJufnascimento(criminalView.getUfNaturalidade());
			report2.setJdocapresentado(criminalView.getDocumentoApresent());
			report2.setJnumdocapresentado(criminalView.getNumDocumentoApresent());
			report2.setJorgaoexpuf(criminalView.getOrgaoExpUfUfUf());
			report2.setJstatus(String.valueOf(criminalView.getStatusReg()));
			report2.setJprofissao(criminalView.getProfissao());
			report2.setJinstrucao(criminalView.getGrauInstrucao());
			report2.setJavrua(criminalView.getAvRua());
			report2.setJnumero(criminalView.getNumero());
			report2.setJbairro(criminalView.getBairro());
			report2.setJmunendereco(criminalView.getMunicipio());
			report2.setJufendereco(criminalView.getEstado());
			report2.setJcep(criminalView.getCep());
			report2.setJcomplemento(criminalView.getComplemento());

			jDataRegistro = criminalView.getDataReg();
			report2.setJdiareg((int) UtilBean.extraiDigitos(jDataRegistro, 8, 6, 2));
			report2.setJmesreg((int) UtilBean.extraiDigitos(jDataRegistro, 8, 4, 2));
			report2.setJanoreg((int) UtilBean.extraiDigitos(jDataRegistro, 8, 0, 4));

			jDataAtuacao = criminalView.getDataAtuacao();
			report2.setJdiaatuacao((int) UtilBean.extraiDigitos(jDataAtuacao, 8, 6, 2));
			report2.setJmesatuacao((int) UtilBean.extraiDigitos(jDataAtuacao, 8, 4, 2));
			report2.setJanoatuacao((int) UtilBean.extraiDigitos(jDataAtuacao, 8, 0, 4));

			report3.setJaltura(criminalView.getAltura());
			report3.setJestadocivil(criminalView.getEstadoCivil());
			report3.setJcutis(criminalView.getCodigoCutis());
			report3.setJcorcabelo(criminalView.getCodigoCorCabelo());
			report3.setJtipocabelo(criminalView.getCodigoTipoCabelo());
			report3.setJtipocabelo(criminalView.getCodigoTipoCabelo());
			report3.setJcorolhos(criminalView.getCodigoCorOlhos());
			report3.setJsinais(criminalView.getMarcaPartCicatTatuag());
			report3.setJcompleicao(criminalView.getCompleicao());
			report3.setJnomevitima(criminalView.getNomeVitima());
			report3.setJmotivo(criminalView.getMotivoPrisaoLei());
			report3.setJocorrencia(1);
			for (int i = 1; i <= 4; i++) {

				if (criminalView.getObservacao()[i] != null) {
					report3.setJobservacoes(i, criminalView.getObservacao()[i]);
				}

			}

			jDataDig = criminalView.getDataDocAtu();
			report3.setJdiadig((int) UtilBean.extraiDigitos(jDataDig, 8, 6, 2));
			report3.setJmesdig((int) UtilBean.extraiDigitos(jDataDig, 8, 4, 2));
			report3.setJanodig((int) UtilBean.extraiDigitos(jDataDig, 8, 0, 4));
			report3.setJmatricula(criminalView.getMatriculaFuncAtu());
			report3.setJhorario(criminalView.getHoraAtu());
			senhaView.consultaMatricula(report3.getJmatricula());
			report3.setJnomedigitador(senhaView.getNome());

			switch (report2.getJstatus()) {
			case "0": {
				jDescreg = "Registro Normal";
				break;
			}
			case "1": {
				jDescreg = "Registro Cancelado";
				break;
			}
			case "2": {
				jDescreg = "Registro com Mandato de Prisao preventiva";
				break;
			}
			case "3": {
				jDescreg = "Condenado";
				break;
			}
			default: {
				break;
			}
			}
			report2.setJdescreg(jDescreg);
			switch (report2.getJinstrucao()) {
			case 0: {
				jDescInstrucao = "Nao Informada";
				break;
			}
			case 1: {
				jDescInstrucao = "Nao Alfabetizado";
				break;
			}
			case 2: {
				jDescInstrucao = "1o. Grau Incompleto";
				break;
			}
			case 3: {
				jDescInstrucao = "1o. Grau Completo";
				break;
			}
			case 4: {
				jDescInstrucao = "2o. Grau Incompleto";
				break;
			}
			case 5: {
				jDescInstrucao = "2o. Grau Completo";
				break;
			}
			case 6: {
				jDescInstrucao = "Superior Incompleto";
				break;
			}
			case 7: {
				jDescInstrucao = "Superior Completo";
				break;
			}
			default: {
				break;
			}
			}
			report1.setJdescinstrucao(jDescInstrucao);
			report2.setJdescinstrucao(jDescInstrucao);

			switch (report3.getJaltura()) {
			case 0: {
				jDescAltura = "Nao Informada";
				break;
			}
			case 1: {
				jDescAltura = "1,60 ou Menos";
				break;
			}
			case 2: {
				jDescAltura = "1,61 - 1,70";
				break;
			}
			case 3: {
				jDescAltura = "1,71 - 1,80";
				break;
			}
			case 4: {
				jDescAltura = "1,81 - 1,90";
				break;
			}
			case 5: {
				jDescAltura = "1,91 ou Mais";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdescaltura(jDescAltura);
			switch (report3.getJestadocivil()) {
			case 0: {
				jDescCivil = "Nao Informado";
				break;
			}
			case 1: {
				jDescCivil = "Casado";
				break;
			}
			case 2: {
				jDescCivil = "Solteiro";
				break;
			}
			case 3: {
				jDescCivil = "DESQUITADO";
				break;
			}
			case 4: {
				jDescCivil = "Viuvo";
				break;
			}
			case 5: {
				jDescCivil = "DIVORCIADO";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdesccivil(jDescCivil);
			switch (report3.getJcutis()) {
			case 0: {
				jDescCutis = "Nao Informada";
				break;
			}
			case 1: {
				jDescCutis = "BRANCA";
				break;
			}
			case 2: {
				jDescCutis = "Preta";
				break;
			}
			case 3: {
				jDescCutis = "Parda Clara";
				break;
			}
			case 4: {
				jDescCutis = "Parda Escura";
				break;
			}
			case 5: {
				jDescCutis = "AMARELA";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdesccutis(jDescCutis);
			switch (report3.getJcorcabelo()) {
			case 0: {
				jDescCor = "Nao Informada";
				break;
			}
			case 1: {
				jDescCor = "CASTANHOS";
				break;
			}
			case 2: {
				jDescCor = "PRETOS";
				break;
			}
			case 3: {
				jDescCor = "Louros";
				break;
			}
			case 4: {
				jDescCor = "Grisalhos";
				break;
			}
			case 5: {
				jDescCor = "Ruivos";
				break;
			}
			case 6: {
				jDescCor = "Brancos";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdesccor(jDescCor);
			switch (report3.getJtipocabelo()) {
			case 0: {
				jDescTipocabelo = "Nao Informado";
				break;
			}
			case 1: {
				jDescTipocabelo = "Liso";
				break;
			}
			case 2: {
				jDescTipocabelo = "Encaracolado";
				break;
			}
			case 3: {
				jDescTipocabelo = "Ondulado";
				break;
			}
			case 4: {
				jDescTipocabelo = "CARAPINHA";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdesctipocabelo(jDescTipocabelo);
			switch (report3.getJcorolhos()) {
			case 0: {
				jDescOlho = "Nao Informada";
				break;
			}
			case 1: {
				jDescOlho = "CASTANHOS";
				break;
			}
			case 2: {
				jDescOlho = "PRETOS";
				break;
			}
			case 3: {
				jDescOlho = "AZUIS";
				break;
			}
			case 4: {
				jDescOlho = "VERDES";
				break;
			}
			case 5: {
				jDescOlho = "Duas Cores";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdescolho(jDescOlho);
			switch (report3.getJcompleicao()) {
			case 0: {
				jDescCompleicao = "Nao Informada";
				break;
			}
			case 1: {
				jDescCompleicao = "Magro";
				break;
			}
			case 2: {
				jDescCompleicao = "Medio";
				break;
			}
			case 3: {
				jDescCompleicao = "Gordo";
				break;
			}
			case 4: {
				jDescCompleicao = "Troncudo";
				break;
			}
			case 5: {
				jDescCompleicao = "Raquitico";
				break;
			}
			default: {
				break;
			}
			}
			report3.setJdesccompleicao(jDescCompleicao);

			// DEFINE PRINTER(1)
			report1.gravaRelatorio(1);
			// report1.gravaRelatorio(2);
			// report1.gravaRelatorio(3);
			report2.gravaRelatorio(2);
			report3.gravaRelatorio(3);

			// if (report3.getPageLine() == report3.getPageSize())
			// report.gravaRelatorio(1);
			// UtilBean.mensagemTexto("-" "STI  -   ");
			// UtilBean.novaPagina();
		}

		// UtilBean.salvaAcao("br.com.vti.sisp.mb.programa.Scrp1600"); // STACK
		Scrp1600 scrp1600 = new Scrp1600(result, sessao);
		if (criminalView.registrosProcessados() == 0) {
			scrp1600.setMensagem("               NENHUMA FICHA FOI CADASTRADA NESSE PERIODO.");
		} else {
			InputStreamDownload relatorio1 = report1.imprimir();
			InputStreamDownload relatorio2 = report2.imprimir();
			InputStreamDownload relatorio3 = report3.imprimir();

			sessao.setAtributo("relatorio1", relatorio1);
			sessao.setAtributo("relatorio2", relatorio2);
			sessao.setAtributo("relatorio3", relatorio3);
			Scrp1640fichas scrp1640fichas = new Scrp1640fichas(result, sessao);

			scrp1640fichas.executar(null);

			return;
		}
		scrp1600.executar(null, null, null, null);
	}
}
